/*
 * Copyright 2010-2012 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jslet.paas.common;

/**
 * <code>HexUtils</code> is the utility class for dealing with hex string converting.
 * 
 * @author Tony Tong
 * @since jslet-paas 1.0
 */
public class HexUtils
{
	/**
	 * Convert byte array to hex string
	 * 
	 * @param bytes[]
	 * @return String Hex string
	 */
	public static String byte2hex(byte bytes[])
	{
		StringBuilder hexStr = new StringBuilder();
		String ch;
		for (int i = 0, len = bytes.length; i < len; ++i)
		{
			ch = Integer.toHexString(0x0100 + (bytes[i] & 0x00FF)).substring(1).toUpperCase();
			hexStr.append(ch);
		}
		return hexStr.toString();
	}

	/**
	 * Convert hex String to byte array
	 * 
	 * @param hexStr hex string
	 * @return byte[]
	 */
	public static byte[] hex2byte(String hexStr)
	{
		byte[] bytes = new byte[hexStr.length() / 2];
		String ch;
		for (int i = 0, len = bytes.length; i < len; i++)
		{
			ch = hexStr.substring(2 * i, 2 * i + 2);
			bytes[i] = (byte) Integer.parseInt(ch, 16);
		}
		return bytes;
	}

}
